package com.ruoyi.blog.mapper;


import com.ruoyi.blog.domain.TCategory;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 类型Mapper接口
 * 
 * @author ruoyi
 * @date 2021-11-14
 */
public interface TCategoryMapper 
{
    /**
     * 查询类型
     * 
     * @param categoryId 类型主键
     * @return 类型
     */
    public TCategory selectTCategoryByCategoryId(Long categoryId);

    /**
     * 查询类型列表
     * 
     * @param tCategory 类型
     * @return 类型集合
     */
    public List<TCategory> selectTCategoryList(TCategory tCategory);

    /**
     * 新增类型
     * 
     * @param tCategory 类型
     * @return 结果
     */
    public int insertTCategory(TCategory tCategory);

    /**
     * 修改类型
     * 
     * @param tCategory 类型
     * @return 结果
     */
    public int updateTCategory(TCategory tCategory);

    /**
     * 删除类型
     * 
     * @param categoryId 类型主键
     * @return 结果
     */
    public int deleteTCategoryByCategoryId(Long categoryId);

    /**
     * 批量删除类型
     * 
     * @param categoryIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTCategoryByCategoryIds(Long[] categoryIds);

    /**
     * 根据ID查询所有子类型（正常状态）
     *
     * @param categoryId 类型ID
     * @return 子类型数
     */
    public int selectNormalChildrenCategoryById(Long categoryId);

    /**
     * 是否存在子节点
     *
     * @param categoryId 类型ID
     * @return 结果
     */
    public int hasChildByCategoryId(Long categoryId);

    /**
     * 校验部门名称是否唯一
     *
     * @param text 类型名称
     * @param categoryId 父类型ID
     * @return 结果
     */
    public TCategory checkCategoryNameUnique(@Param("text") String text, @Param("categoryId") Long categoryId);

    /**
     * 根据ID查询所有子类型
     *
     * @param categoryId 类型ID
     * @return 部门列表
     */
    public List<TCategory> selectChildrenCategoryById(Long categoryId);

    /**
     * 修改子元素关系
     *
     * @param categorys 子元素
     * @return 结果
     */
    public int updateCategoryChildren(@Param("categorys") List<TCategory> categorys);



}
